﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;


namespace QuangNgai
{
    public class _formUtil
    {
        /// Them form con vao form MDI, neu da ton tai thi hien ra
        /// Neu chua ton tai thi them moi.
        public static void AddMdiChild(Form parentFrm, Form childFrm)
        {

            Form[] childArr = parentFrm.MdiChildren;
            bool isExist = false;
            Form currentForm = null;

            foreach (Form f in childArr)
            {
                if (f.Name == childFrm.Name)
                {
                    isExist = true;
                    currentForm = f;
                    break;
                }
            }

            if (isExist == true)
            {
                currentForm.Select();
            }
            else
            {
                childFrm.MdiParent = parentFrm;
                childFrm.Show();
            }
        }

        public static bool DeleteVanBanFile(VanBanFile file)
        {
            bool isFileExisted = false;
            LTQNLinQDataContext db = new LTQNLinQDataContext();
            var fileRecord = (from f in db.VanBanFiles
                              where f.FileID == file.FileID
                              select f).First();

            string folderName = @"\_Attachments\HS";
            string targetPath = Path.GetDirectoryName(Application.ExecutablePath)
                                + folderName
                                + file.VanBan.HSID;
            string fileName = file.FileNewName;
            string fullPath = targetPath + @"\" + fileName;

            if (File.Exists(fullPath))
            {
                try
                {
                    File.Delete(fullPath);
                    isFileExisted = true;
                }
                catch (UnauthorizedAccessException unE)
                {
                    //MessageBox.Show("Không có quyền xóa file này. Hãy tắt hết ứng dụng đang đọc file và thử lại",
                    //    "Không được quyền xóa", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    //goto thoat;

                }
            }
            db.VanBanFiles.DeleteOnSubmit(fileRecord);
            db.SubmitChanges();
            return isFileExisted;
        }
       
        public static void DeleteHoSoFile(HoSo hoSo)
        {
            LTQNLinQDataContext db = new LTQNLinQDataContext();

            string folderName = @"\_Attachments\HS" + hoSo.HSID;
            string targetPath = Path.GetDirectoryName(Application.ExecutablePath)
                                + folderName;

            if (Directory.Exists(targetPath))
            {
                try
                {
                    Array.ForEach(Directory.GetFiles(targetPath), delegate(string path) { File.Delete(path); });
                    Directory.Delete(targetPath);
                }
                catch (UnauthorizedAccessException)
                {
                    throw new UnauthorizedAccessException("Thư mục đang được truy cập. Hãy tắt hết ứng dụng đang đọc file/thư mục và thử lại");
                }
                catch (DirectoryNotFoundException)
                {
                    throw new DirectoryNotFoundException("Thư mục không tồn tại");
                }
                catch (Exception e)
                {
                    throw new Exception("Lỗi xảy ra\n"
                                        + "DeleteHoSoFile(): " + e.Message + "\n"
                                        + "Liên lạc với quản trị viên đễ được hỗ trợ");
                }
            }
        }
    }
}
